package testes;

import static org.junit.Assert.*;


import java.util.HashSet;
import java.util.TreeSet;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.quasar.copaPaises.businessLayer.*;

public class EstadioTest {

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
	}

	@Before
	public void setUp() throws Exception {
		 CalendarDate.allInstances.clear();
		  Campeonato.allInstances.clear();
		  Cartao.allInstances.clear();
		  Cidade.allInstances.clear();
		  Clube.allInstances.clear();
		  Continente.allInstances.clear();
		  Equipa.allInstances.clear();
		  Estadio.allInstances.clear();
		  Golo.allInstances.clear();
		  Grupo.allInstances.clear();
		  Jogador.allInstances.clear();
		  Jogo.allInstances.clear();
		  Membro.allInstances.clear();
		  Pais.allInstances.clear();
		  Participacao.allInstances.clear();
		  Participante.allInstances().clear();
		  Treinador.allInstances.clear();
	}

	@After
	public void tearDown() throws Exception {
		 CalendarDate.allInstances.clear();
		  Campeonato.allInstances.clear();
		  Cartao.allInstances.clear();
		  Cidade.allInstances.clear();
		  Clube.allInstances.clear();
		  Continente.allInstances.clear();
		  Equipa.allInstances.clear();
		  Estadio.allInstances.clear();
		  Golo.allInstances.clear();
		  Grupo.allInstances.clear();
		  Jogador.allInstances.clear();
		  Jogo.allInstances.clear();
		  Membro.allInstances.clear();
		  Pais.allInstances.clear();
		  Participacao.allInstances.clear();
		  Participante.allInstances().clear();
		  Treinador.allInstances.clear();
	}

	@Test
	public final void testEstadio() {
		Estadio e= new Estadio();
		assertNotNull(e);
	}

	@Test
	public final void testEstadioIntIntStringCidade() {
		Cidade c = new Cidade();
		Estadio e= new Estadio(1000, 1000, "Luz", c);
		assertNotNull(e);
		
	}

	@Test
	public final void testInauguracao() {
		Cidade c = new Cidade();
		Estadio e= new Estadio(1000, 1000, "Luz", c);
		assertTrue(e.inauguracao() == 1000);
	}

	@Test
	public final void testSetInauguracao() {
		Cidade c = new Cidade();
		Estadio e= new Estadio(1000, 1000, "Luz", c);
		e.setInauguracao(10000);
		assertTrue(e.inauguracao() == 10000);
	}

	@Test
	public final void testLotacao() {
		Cidade c = new Cidade();
		Estadio e= new Estadio(1000, 1000, "Luz", c);
		assertTrue(e.lotacao() == 1000);
	}

	@Test
	public final void testSetLotacao() {
		Cidade c = new Cidade();
		Estadio e= new Estadio(1000, 1000, "Luz", c);
		e.setLotacao(10000);
		assertTrue(e.lotacao() == 10000);
	}

	@Test
	public final void testNome() {
		Cidade c = new Cidade();
		Estadio e= new Estadio(1000, 1000, "Luz", c);
		e.setLotacao(10000);
		assertTrue(e.nome().equals("Luz"));
	}

	@Test
	public final void testSetNome() {
		Estadio e = new Estadio();
		e.setNome("Luz");
		assertSame(e.nome(), "Luz");
	}

	@Test
	public final void testCidade() {
		Cidade c = new Cidade();
		Estadio e= new Estadio(1000, 1000, "Luz", c);
		assertNotNull(e.cidade());
	}

	@Test
	public final void testSetCidade() {
		Cidade c = new Cidade();
		Cidade c2 = new Cidade();
		c.setNome("Lisboa");
		c2.setNome("Paris");
		Estadio e= new Estadio(1000, 1000, "Luz", c);
		e.setCidade(c2);
		assertSame(e.cidade(), c2);
		
	}

	@Test
	public final void testJogos() {
		Jogo j1 = new Jogo();
		Jogo j2 = new Jogo();
		Jogo j3 = new Jogo();
		Estadio e1 = new Estadio();
		Estadio e2 = new Estadio();
		j1.setEstadio(e1);
		j2.setEstadio(e1);
		j3.setEstadio(e2);
		assertTrue(e1.jogos().size()==2);
	}

	@Test
	public final void testSetJogos() {
		Estadio e = new Estadio();
		Jogo j1 = new Jogo();
		Jogo j2 = new Jogo();
		HashSet<Jogo> j = new HashSet<Jogo>();
		j.add(j2);
		j.add(j1);
		e.setJogos(j);
		assertTrue(e.jogos().equals(j));
		
	}

	@Test
	public final void testMaisVisitantes() {
		Jogo j1 = new Jogo();
		Jogo j2 = new Jogo();
	//	Jogo j3 = new Jogo();
	//	Jogo j4 = new Jogo();
		Jogo j5 = new Jogo();
		Jogo j6 = new Jogo();
		Equipa eq1 = new Equipa();
		Equipa eq2= new Equipa();
		Equipa eq3 = new Equipa();
		Equipa eq4 = new Equipa();
		Equipa eq5 = new Equipa();
		Equipa eq6 = new Equipa();
		Pais p1 = new Pais(); p1.setNome("p1");
		Pais p2 = new Pais(); p2.setNome("p2");
		Pais p3 = new Pais(); p3.setNome("p3");
		Pais p4 = new Pais(); p4.setNome("p4");
		Pais p5 = new Pais(); p5.setNome("p5");
		Pais p6 = new Pais(); p6.setNome("p6");
		Estadio e1 = new Estadio(); e1.setNome("e1");
		Estadio e2 = new Estadio(); e2.setNome("e2");
		Estadio e3 = new Estadio(); e3.setNome("e3");
		eq1.setSeleccao(p1);
		eq2.setSeleccao(p2);
		eq3.setSeleccao(p3);
		eq4.setSeleccao(p4);
		eq5.setSeleccao(p5);
		eq6.setSeleccao(p6);
		TreeSet<Pais> s1 = new TreeSet<Pais>();
		TreeSet<Pais> s2 = new TreeSet<Pais>();
		//TreeSet<Pais> s3 = new TreeSet<Pais>();
		//TreeSet<Pais> s4 = new TreeSet<Pais>();
		TreeSet<Pais> s5 = new TreeSet<Pais>();
		TreeSet<Pais> s6 = new TreeSet<Pais>();
		
		TreeSet<Equipa> eqs1 = new TreeSet<Equipa>();
		eqs1.add(eq1);
		eqs1.add(eq2);
		j1.setEquipa(eqs1);
		
		s1.add(p1);
		s1.add(p2);
		j1.setSeleccao(s1);
		j1.setEstadio(e1);
		s2.add(p3);
		s2.add(p4);
		
		TreeSet<Equipa> eqs2 = new TreeSet<Equipa>();
		eqs2.add(eq3);
		eqs2.add(eq4);
		j2.setEquipa(eqs2);
		j2.setSeleccao(s2);
		j2.setEstadio(e1);
	
		/**s3.add(p5);
		s3.add(p6);
		j3.setSeleccao(s3);
		j3.setEstadio(e2);
		s4.add(p2);
		s4.add(p3);
		j4.setSeleccao(s4);
		j4.setEstadio(e2);*/
		
		
		TreeSet<Equipa> eqs3 = new TreeSet<Equipa>();
		eqs3.add(eq5);
		eqs3.add(eq6);
		j5.setEquipa(eqs3);
		s5.add(p5);
		s5.add(p6);
		j5.setSeleccao(s5);
		j5.setEstadio(e3);
		s6.add(p6);
		s6.add(p3);
		TreeSet<Equipa> eqs4 = new TreeSet<Equipa>();
		eqs4.add(eq6);
		eqs4.add(eq3);
		j6.setEquipa(eqs4);
		j6.setSeleccao(s6);
		j6.setEstadio(e3);

		assertTrue(e1.maisVisitantes().equals(e1));
		
		
	}

	@Test
	public final void testToString() {
		Estadio e = new Estadio();
		assertTrue(e.toString().equals("Estadio [inauguracao=0, lotacao=0, nome=null, cidade=null]\n"));
	}

}
